package com.atguigu.gmall.product.controller;

import com.alibaba.fastjson.JSONObject;
import com.atguigu.gmall.common.result.Result;
import com.atguigu.gmall.model.product.*;
import com.atguigu.gmall.product.service.BaseTrademarkService;
import com.atguigu.gmall.product.service.ManagerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/api/product/inner")
@Api(value = "商品详情开发接口")
public class ProductApiController {
    @Autowired
    private ManagerService managerService;
    @Autowired
    private BaseTrademarkService baseTrademarkService;
    /**
     * 通过品牌Id集合来查询数据
     * @param tmId
     * @return
     */
    @GetMapping("/getTrademark/{tmId}")
    public BaseTrademark getTrademark(@PathVariable("tmId")Long tmId){
        return baseTrademarkService.getById(tmId);
    }

    /**
     * 首页数据查询
     * @return
     */
    @GetMapping("/getBaseCategoryList")
    public Result getBaseCategoryList(){
        List<JSONObject> result=managerService.getBaseCategoryList();
        return Result.ok(result);
    }
    /**
     * 根据skuId获取平台属性数据
     * @param skuId
     * @return
     */
    @GetMapping("/getAttrList/{skuId}")
    @ApiOperation("根据skuId获取平台属性数据")
    public List<BaseAttrInfo> getAttrList(@PathVariable Long skuId){
        return managerService.getAttrList(skuId);
    }

    /**
     * 根据spuId查询海报集合数据
     * @param spuId
     * @return
     */
    @GetMapping("/findSpuPosterBySpuId/{spuId}")
    @ApiOperation("根据spuId查询海报集合数据")
    public List<SpuPoster> findSpuPosterBySpuId(@PathVariable Long spuId){
        return  managerService.findSpuPosterBySpuId(spuId);
    }

    /**
     * 根据spuId获取到销售属性Id和skuId组成的数据集
     * @param spuId
     */
    @GetMapping("/getSkuValueIdsMap/{spuId}")
    @ApiOperation("根据spuId获取到销售属性Id和skuId组成的数据集")
    public Map getSkuValueIdsMap(@PathVariable Long spuId){
        return  managerService.getSkuValueIdsMap(spuId);
    }

    /**
     * 根据spuId，skuId 查询销售属性集合
     * @param skuId
     * @param spuId
     * @return
     */
    @GetMapping("/getSpuSaleAttrListCheckBySku/{skuId}/{spuId}")
    @ApiOperation("根据spuId，skuId查询销售属性集合")
    public List<SpuSaleAttr> getSpuSaleAttrListCheckBySku(@PathVariable("skuId") Long skuId,@PathVariable("spuId") Long spuId){
        return managerService.getSpuSaleAttrListCheckBySku(skuId, spuId);
    }


    /**
     * 获取sku最新价格
     * @param skuId
     * @return
     */
    @GetMapping("/getSkuPrice/{skuId}")
    @ApiOperation("获取sku最新价格")
    public BigDecimal getSkuPrice(@PathVariable Long skuId){
        return managerService.getSkuPrice(skuId);
    }

    /**
     * 根据三级分类Id获取分类信息
     * @param category3Id
     * @return
     */
    @GetMapping("/getCategoryView/{category3Id}")
    @ApiOperation("根据三级分类Id获取分类信息")
    public BaseCategoryView getCategoryView(@PathVariable Long category3Id){
        BaseCategoryView baseCategoryView=managerService.getCategoryView(category3Id);
        return baseCategoryView;
    }

    /**
     * 根据skuId查询skuInfo信息和图片列表
     * @param skuId
     * @return
     */
    @GetMapping("/getSkuInfo/{skuId}")
    @ApiOperation("根据skuId查询skuInfo信息和图片列表")
    public SkuInfo getSkuInfo(@PathVariable Long skuId){
        SkuInfo skuInfo=managerService.getSkuInfo(skuId);
        return skuInfo;
    }
}
